/*
 * @author Guillermo Adrian Salguero Ortega
 */

package clases;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;

public class Circuito implements Serializable{
    
  public String nombre;
  public Integer aforo;
  public Integer canon;
  public Integer [] rectas;
  public Integer [] curvas;
  public final static Integer [] premios = {75000, 50000, 25000, 15000, 10000};

  // Constructores
    public Circuito (String nombre, Integer aforo, Integer canon){
    this.nombre = nombre;
    this.aforo = aforo;
    this.canon = canon;
    }
    public Circuito (String nombre, Integer aforo, Integer canon,Integer [] rectas, Integer [] curvas){
    this.nombre = nombre;
    this.aforo = aforo;
    this.canon = canon;
    this.rectas = rectas;
    this.curvas = curvas;
     }  
  // Getters y Setters
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Integer getAforo() {
        return aforo;
    }

    public void setAforo(Integer aforo) {
        this.aforo = aforo;
    }

    public Integer getCanon() {
        return canon;
    }

    public void setCanon(Integer canon) {
        this.canon = canon;
    }

    public Integer[] getRectas() {
        return rectas;
    }

    public void setRectas(Integer[] rectas) {
        this.rectas = rectas;
    }

    public Integer[] getCurvas() {
        return curvas;
    }

    public void setCurvas(Integer[] curvas) {
        this.curvas = curvas;
    }

// Metodos necesarios para escribir y leer de fichero la clase Circuito
   public static void escribirCircuito(Circuito circuito) {
       try {
           
           // Recupero el listado actual y le añado el nuevo
             ArrayList<Circuito> listaCircuitos = Circuito.leerCircuito();
            listaCircuitos.add(circuito);
            //Stream para guardar archivo
            ObjectOutputStream file = new ObjectOutputStream(new FileOutputStream("circuitos.dat"));
            //Escribo el objeto en archivo
            file.writeObject(listaCircuitos);
            //Cierro el archivo
            file.close();
        } catch (IOException ex) {
            System.out.println(ex);
        }
   }
    public static void escribirCircuito(ArrayList<Circuito> circuitoList) {
       try {
       //Stream para guardar archivo
            ObjectOutputStream file = new ObjectOutputStream(new FileOutputStream("circuitos.dat"));
            //Escribo el objeto en archivo
            file.writeObject(circuitoList);
            //Cierro el archivo
            file.close();
       } catch (IOException ex) {
            System.out.println(ex);
        }
   }
    public static ArrayList<Circuito> leerCircuito(){
        ArrayList<Circuito> circuitoList = new ArrayList<Circuito>();

        try {
            FileInputStream fis = new FileInputStream("circuitos.dat");
            ObjectInputStream file =null;  
            while(fis.available()>0){
                file = new ObjectInputStream(fis);             
                circuitoList = (ArrayList<Circuito>)file.readObject();   
            }
            //Cierro el archivo
            file.close();
            // Retorno el circuito
        } catch (ClassNotFoundException | IOException ex) {
            System.out.println(ex);
        }catch (NullPointerException ex){
            System.out.println("Exception Listado de circuitos vacio");
        }
      // Devuelvo el listado de los circuitos almacenados  
      return circuitoList;
      }
}